#include	"Serveur.h"

#include	<stdlib.h>
#include	<iostream>
# include <sys/ipc.h>
#include <sys/shm.h>

int main ( int argc, char *argv[] )
{
/******************************************************

 Realise par Clement Jeremy et Passieux Melodie

	M1 Informatique Groupe B.  2009/2010


*******************************************************/

  cout << "*************************************\n";
  cout << "**            Serveur WIKI         **\n";
  cout << "*************************************\n";

	Serveur s;
	int p;
	if(argc<2){
		cout<<"# Veuillez choisir une BR (non utilisée..)"<<endl;
		cin>>p;
	}
	else
		p = atoi(argv[1]);

	cout<<"portTCP : "<<p<<endl;


//obtention de la clé
  int cleMem = ftok ("./cle.txt",1);
  if(cleMem == 0){
    cout<<"Impossible de creer la Clef memoire. "<<cleMem<<endl;
    exit(-1);
  }
  else {
    cout<<"Calcul de la clef memoire reussit. "<< cleMem<<endl;
  }

  // acces a l'espace memoire partagée
  int laMem = shmget(cleMem,(10+1)*sizeof(int), IPC_CREAT | 0600);
  if(laMem ==  0){
    cout<<"impossible de creer la memoire partagée."<<laMem<<endl;
    exit(-1);
  }
  else {
    cout<<"la Memoire Partagée a bien ete cree. "<<laMem<<endl;
  }

  //demande d'acces à la memoire partagée par le proc
  int * p_att;
  p_att=(int*) shmat(laMem,NULL,0);
  if(*p_att == -1){
    cout<<"impossible d'acceder a l'espace memoire pour le proc :"<<getpid()<<endl;
    exit(-1);
  }
  else {
    cout<<"Acces à l'espace memoire réussit pour le proc: "<<getpid()<<endl;
  }
*(Serveur*)p_att = s;

	s.initCommunication(p,0,512);

	return EXIT_SUCCESS;
}				/* ----------  end of function main  ---------- */
